#include"comm.h"
int main()
{
    //1.创建共享内存
    key_t key = ftok(PATHNAME, PROJ_ID); //通过ftok获取key值作为shmget的第一个参数
    if (key < 0)
    {
        perror("ftok");
        return 1;
    }
    int shm = shmget(key, SIZE, IPC_CREAT | IPC_EXCL|0666); //创建新的共享内存
    if (shm < 0)
    {
        perror("shmget");
        return 2;
    }
    printf("key: %x\n", key); //打印key值
    printf("shm: %d\n", shm); //打印共享内存用户层id

    //2.关联共享内存
    sleep(2);

    char* mem = (char*)shmat(shm, NULL, 0); //使用shmat函数使该进程和共享内存关联
    if (mem == (void*)-1)//关联失败
    {
        perror("shmat");
        return 1;
    }
    //进行业务逻辑
    int i = 0;
    while (1)
    {
        mem[i] = 'A' + i;
        i++;
        mem[i] = '\0';
        sleep(1);
    }


    //3.去关联
    shmdt(mem);

    //4.释放共享内存
    shmctl(shm, IPC_RMID, NULL); //IPC_RMID: 
    return 0;
}